"""第2题：列表排序
题目描述：给你一个列表L, 对L进行升序排序并输出排序后的列表。
例如：L = [8,2,50,3]
则输出：[2,3,8,50]
示例：输入：L = [4, 2, 25, 7777777, 100, 3, 77777777, 77777777, 77777777, 77777777]
输出：[2, 3, 4, 25, 100, 7777777, 77777777, 77777777, 77777777, 77777777]"""
#L=[8,2,50,3]
#L.sort()
#print(L)
"""拓展：如何对单词进行按首字母顺序的排序"""
#my_str = "Hello this Is an Example With cased letters"
#拿到字符串，用split()函数将字符串分解为单词列表
#words=my_str.split()
#使用sort()函数进行排序
#words.sort()
#print(words)
"总结：sort()函数可对数字，字母进行排序"

"""第3题：字符串逆序
题目描述：给你一个字符串 a， 请你输出逆序之后的a。
例如：a=‘xydz’
则输出：zdyx"""
"方法一reverse()函数"
#a='xydz'
#word=list(a)
#print(word)
#word.reverse()
#for letter in word:
 #   print(letter,end="")
"""sort 与 sorted 区别：
sort 是应用在 list 上的方法，属于列表的成员方法，sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作，而内建函数 sorted 方法返回的是一个新的 list，而不是在原来的基础上进行的操作。
sort使用方法为ls.sort()，而sorted使用方法为sorted(ls)
end=""
 "方法二：切片"""
#a="xydz"
#word=list(a)
#rev=a[::-1]
#for letter in rev:
 #   print(letter,end='')
"方法三"
#a='xydz'
#word=list(a)
#for letter in range(len(a)-1,-1,-1):
#    print (word[letter],end='')
"""第4题：输出字典key
题目描述：给你一字典a，如a={1:1,2:2,3:3}，输出字典a的key，以','连接，如‘1,2,3'。要求key按照字典序升序排列(注意key可能是字符串）。
例如：a={1:1,2:2,3:3}, 则输出：1,2,3"""
#a={1:1,2:2,3:3}
#lst=list(a.keys())
#lst.sort()
#print(','.join(str(i) for i in lst))
"""1、
join()函数
语法：  'sep'.join(seq)
参数说明
sep：分隔符。可以为空
seq：要连接的元素序列、字符串、元组、字典
上面的语法即：以sep作为分隔符，将seq所有的元素合并成一个新的字符串
返回值：返回一个以分隔符sep连接各个元素后生成的字符串
2.
items() 函数以列表返回可遍历的(键, 值) 元组
 d.values()
 d.keys()"""
"""第5题：输出字符奇数位置的字符串
题目描述：给你一个字符串 a， 输出a中奇数位置字符构成的字符串（位置编号从1开始）。
例如：a=‘xyzwd’
则输出:xzd
示例：输入：a = "0123456789"
输出：02468"""
#a='xyzwd'
#b=(a[i] for i in range(0,len(a),2))
#print("".join(b))
"""列表推导式
[表达式 for 变量 in 列表] 
[out_exp_res for out_exp in input_list]
或者 
[表达式 for 变量 in 列表 if 条件]
[out_exp_res for out_exp in input_list if condition]
字典推导式
{ key_expr: value_expr for value in collection }
或
{ key_expr: value_expr for value in collection if condition }"""
"""第6题：求解100以内的所有素数
题目描述：输出100以内的所有素数，素数之间以一个空格区分（注意，最后一个数字之后不能有空格）。"""
#lst=[]
#for i in range(1,100):
#    for j in range(2,i):
#        if i%j!=0:
#            lst.append(i)
#            break
#        else:
#            print("{}不是素数。".format(i))
#            break
#s=""
#for a in lst:
#    s+=" " +str(a)
#print(s)
"""第7题：求矩形面积
题目描述：已知矩形长a,宽b,输出其面积和周长，面积和周长以一个空格隔开。
例如：a = 3, b = 8
则输出：24 22
示例：输入：a = 3
b = 8
输出：24 22"""
#def lenth(long,width):
#    return 2*(a+b)
#def area(long,width):
#    return a*b
#a=int(input("请输入长方形的长的值： "))
#b=int(input("请输入长方形的宽的值： "))
#lenth1=lenth(a,b)
#area1=area(a,b)
#print(lenth1,area1)
"""第8题：求中位数
题目描述：给你一个整数列表L, 输出L的中位数（若结果为小数，则保留一位小数）。
例如： L=[0,1,2,3,4]
则输出：2"""

#L=[1,4,6,9,24,23]
#L.sort()
#print(L)
#e=int(len(L))
#print(e)
#if e%2==0:
#    a=e//2
#    print(a)
#    print(L[3])
#    print((L[a]+L[a-1])/2.0)
#else:
#    c=int((e-1)/2)
#    print(e)
#    print(L[c])
"""[]中的变量应该是切片或者int()过的数
注意列表从0开始计数
保留小数的方法：round(数字，保留位数）"""

"""第9题：最大公约数
题目描述：给你两个正整数a和b， 输出它们的最大公约数。
例如：a = 3, b = 5
则输出：1
示例：输入：a = 3
b = 5
输出：1"""
"方法一"
#a=3
#b=5
#L1=[]
#L2=[]
#for i in range(1,a+1):
#    if a%i==0:
#        L1.append(i)
#    else:
#        continue
#for i in range(1, b + 1):
#    if b % i == 0:
#        L2.append(i)
#    else:
#        continue
#print(L1)
#print(L2)
#S1=set(L1)
#S2=set(L2)
#print(S1&S2)
"方法二"
#for i in range(min(a,b), 0, -1): #从两数中小的一个开始到1，一个个验证
 #   if a % i == 0 and b % i ==0: #如果能够被两数同时整除
 #       print(i) #输出该数后不再循环
 #       break
"""set()函数
set顾名思义是集合，里面不能包含重复的元素，接收一个list（可迭代对象）作为参数
&交集 |并集
Python代码中使用append()函数后报错：
AttributeError: ‘NoneType’ object has no attribute ‘append’
代码：
L = L.append('a')
1
解决方法
将“L = L.append(‘a’)”改为L.append(‘a’)后问题解决
原因解释
append会修改L本身，并且返回None。不能把返回值再赋值给L"""
"""第10题：最小公倍数
题目描述：给你两个正整数a和b， 输出它们的最小公倍数。
例如：a = 3, b = 5
则输出：15
示例：输入：a = 3
b = 5
输出：15
"""
"方法一"
#a=50
#b=20
#c=a
#while True:
#    if c%a==0 and c%b==0:
#        print(c)
#        break
#    else:
#        c+=1
"方法二：两数乘积除以最大公约数"
#a=50
#b=20
#for i in range(b,0,-1):
#    if a%i==0 and b%i==0:
#        print(i)
#        break
#c=a*b/i
#print(c)
"""第11题：结尾0的个数
题目描述：给你一个正整数列表 L, 输出L内所有数字的乘积末尾0的个数。(提示:不要直接相乘,数字很多,相乘得到的结果可能会很大)。
例如： L=[2,8,3,50],
则输出：2
示例：输入：L = [4, 2, 25, 7777777, 100, 3, 77777777, 77777777, 77777777, 77777777]
输出：4"""
#L = [4, 2, 25, 7777777, 100, 3, 77777777, 77777777, 77777777, 77777777]
#a=0
#b=0
#    while i%2==0:
#       a+=1
#        i=i/2
#    while i%5==0:
#        b+=1
#        i=i/5
#print(a)
#print(b)
#print(min(a,b))
"""第12题：结尾非零数的奇偶性
题目描述：给你一个正整数列表 L, 判断列表内所有数字乘积的最后一个非零数字的奇偶性。如果为奇数输出1,偶数则输出0.。
例如：L=[2,8,3,50]
则输出：0
示例：输入：L = [2, 8, 3, 50]
输出：0"""
#L=[2,8,3,50]
#a=0
#b=0
#   while i%2==0:
#       a+=1
#       i=i/2
#   while i%5==0:
#       b+=1
#       i=i/5
#if b>a:
#    print(1)
#else:
#    print(0)
"""第13题：光棍的悲伤
题目描述：光棍们对1总是那么敏感，因此每年的11.11被戏称为光棍节。小Py光棍几十载，光棍自有光棍的快乐。让我们勇敢地面对光棍的身份吧，现在就证明自己：给你一个整数a，数出a在二进制表示下1的个数，并输出。
例如：a=7
则输出：3
示例：输入：a = 7
输出：3"""
#a=7
#c=0
#a=str(a)
#b=bin(int(a,10))
#print(b)
#for i in b:
#    if i=="1":
#        c+=1
#print(c)
("其他进制转换为二进制用bin（参数1，参数2）函数，参数1应该为需转换的数字的字符串形式，参数2为需转换数的进制，输出类型为字符串"
 "八进制oct,十进制int,十六进制hex。2.字符串可迭代")
"""第14题：Python之美
题目描述：输出Python之禅。
注意：输出python之禅的源码即可，不要转换为英文。（小小的提示：print this.s)"""
#import this
"""第15题：大小写转换
题目描述：给定一个字符串a, 将a中的大写字母 转换成小写，其它字符不变，并输出。
例如：a="aaaaaabbbDDDDD"
则输出：aaaaaabbbddddd
示例：输入：a = "KDJIskos234k,.;djfeiJ"
输出：kdjiskos234k,.;djfeij"""
#a="aaaaaabbbDDDDD"
#print(a.lower())
"str.upper()   str.lower()  "
"""第16题：人民币金额打印(非常困难）
题目描述：银行在打印票据的时候，常常需要将阿拉伯数字表示的人民币金额转换为大写表示，现在请你来完成这样一个程序。
在中文大写方式中，0到10以及100、1000、10000被依次表示为：    零 壹 贰 叁 肆 伍 陆 柒 捌 玖 拾 佰 仟 万
以下的例子示范了阿拉伯数字到人民币大写的转换规则：
1	壹圆
11	壹拾壹圆
111	壹佰壹拾壹圆
101	壹佰零壹圆
-1000	负壹仟圆
1234567	壹佰贰拾叁万肆仟伍佰陆拾柒圆
现在给你一个整数a(|a|<100000000), 请你打印出人民币大写表示.
例如：a=1
则输出：壹圆

注意：请以Unicode的形式输出答案。提示：所有的中文字符，在代码中直接使用其Unicode的形式即可满足要求，中文的Unicode编码可以通过如下方式获得：u'壹'。
注意：代码无需声明编码！！不要在代码头部声明文件编码，否则会导致语法错误！
Note：数据已于2013-11-19日加强，原来通过的代码可能不能再次通过。
示例：输入：a = 0
输出：零圆"""
"""第17题：公约数的个数
题目描述：给你两个正整数a,b,  输出它们公约数的个数。
例如：a = 24， b = 36
则输出：6
示例：输入：a = 24
b = 36
输出：6"""
#a=24
#b=36
#c=0
#for i in range(1,a+1):
#    if a%i==0 and b%i==0:
#        c+=1
#    else:
#        continue
#print(c)
"""第18题：逆解最大公约数与最小公倍数(需重做）
题目描述：我们经常遇到的问题是给你两个数，要你求最大公约数和最小公倍数。今天我们反其道而行之，给你两个数a和b，计算出它们分别是哪两个数的最大公约数和最小公倍数。输出这两个数，小的在前，大的在后，以空格隔开。若有多组解，输出它们之和最小的那组。注：所给数据都有解，不用考虑无解的情况。
例如：a=3, b = 60
则输出：12 15"""
#import math #导入math库以便使用最大公约数函数gcd
#c = min(4,8) #取ab中小的数即为最大公约数
#d = max(4,8) #取ab中大的数即为最小公倍数
#flag = False #预先将flag置为False
#for i in range(c,d+1): #外层循环i
#    for j in range(c,d+1): #内层循环j
#        if math.gcd(i,j) == c and i*j/c==d and j%i != 0: #如果ij的最大公约数为c且最小公倍数为d且ij互质
#            print(i,j) #则说明找到了将其打印
#            flag = True #将flag置为True
#            break #跳出内层循环
#    if flag: #检验flag，假继续循环，真跳出外层循环
#        break
"""第19题：单身情歌
题目描述：抓不住爱情的我 总是眼睁睁看它溜走 ...现在来练习一下发现爱的能力，给你一个字符串a,如果其中包含"LOVE"（love不区分大小写)则输出LOVE，否则输出SINGLE。
例如：a ="OurWorldIsFullOfLOVE"
则输出：LOVE
示例：输入：a = "OurWorldIsFullOfLOVE"
输出：LOVE"""
#b = a.lower() #将字符串a全部转换为小写
#if "love" in b: #判断“love”是否在字符串中
#   print("LOVE")
#else:
#    print("SINGLE")
"""第20题：信息加密
题目描述：给你个小写英文字符串a和一个非负数b(0<=b<26), 将a中的每个小写字符替换成字母表中比它大b的字母。这里将字母表的z和a相连，如果超过了z就回到了a。
例如a="cagy", b=3,
则输出 ：fdjb
示例：输入：a = "cagy"
b = 3
输出：fdjb"""
#a="cagy"
#for letter in a:
#    num=ord(letter)+3
#    if num>122:
#        num=num-26
#    s = chr(num)
#    print(s,end="")
" ord() 函数 它以一个字符（长度为1的字符串）作为参数，返回对应的 ASCII 数值   chr()：输入一个整数【0，255】返回其对应的ascii符号，       end="""
"""第21题：回文子串
题目描述：给你一个字符串a和一个正整数n,判断a中是否存在长度为n的回文子串。如果存在，则输出YES，否则输出NO。
回文串的定义：记串str逆序之后的字符串是str1，若str=str1,则称str是回文串，如"abcba".示例：输入：a = "abcba"
n = 5
输出：YES"""
"方法一：循环"
#a = "abcba"
#b=""
#n=5
#for i in a[::-1]:
#    b+=i
#print(b)
#n1=len(b)
#if a==b:
#    if n1 == n:
#        print("Yes")
#    else:
#        print("No")
#else:
#    print("No")
"方法二：列表"
#a="abcb"
#A=list(a)
#B=list(a)
##B=A错误
#A.reverse()
##B=A.reverse()错误
#print(A)
#print(B)
#if B==A:
#    print("Yes")
#else:
#    print("No")


"方法三：python的特性"
#a="abcba"
#n=5
#n1=len(a)
#b=a[::-1]
#if a==b:
#    if n1 == n:
#        print("Yes")
#    else:
#        print("No")
#else:
#    print("No")
"""reverse()、reversed()、sort()、sorted()详细用法解析见：https://www.cnblogs.com/june0507/p/7601016.html
https://www.cnblogs.com/xsmile/p/8074458.html
a="1234"
print(reversed(a))只能得到迭代器对象地址，错误
print(list(reversed(a)))返回一个列表
注：只能进行一次循环遍历。显示一次所包含的值
"""

"""第22题：时间就是金钱
题目描述：给你两个时间st和et(00:00:00<=st <= et<=23:59:59), 请你给出这两个时间间隔的秒数。
如：st="00:00:00", et="00:00:10", 则输出10.示例：输入：st = "00:00:00"
et = "00:00:52"
输出：52"""
#st="00:20:00"
#et="01:00:52"
#a1=int(st[0:2])
#a2=int(st[3:5])
#a3=int(st[6:8])
#b1=int(et[0:2])
#b2=int(et[3:5])
#b3=int(et[6:8])
#sum1=a1*3600+a2*60+a3
#sum2=b1*3600+b2*60+b3
#result=sum2-sum1
#print(result)
"""第23题：365 Or 366？
题目描述：一年有多少天，这是个大问题，很值得思考。现在给你一个年份year(year为四位数字的字符串，如"2008","0012"),
你输出这一年的天数。如year="2013", 则输出365。示例：输入：year = "2008"
输出：366"""
#year=input("请输入年份： ")
#y=int(year)
#if y%4==0 and y%1000!=0:
#    print(366)
#else:
#    print(365)
"""第24题：一马当先
题目描述：下过象棋的人都知道，马只能走'日'字形（包括旋转90°的日），现在想象一下，给你一个n行m列网格棋盘，
棋盘的左下角有一匹马，请你计算至少需要几步可以将它移动到棋盘的右上角，若无法走到，则输出-1.
如n=1，m=2,则至少需要1步；若n=1，m=3,则输出-1。示例：输入：n = 1
m = 2
输出：1"""
"""第25题：格式化时间
题目描述：给你一个时间t（t是一个字典，共有六个字符串key(year,month,day,hour,minute,second),值为每个值为数字组成的字符串，
如t={'year':'2013','month':'9','day':'30','hour':'16','minute':'45','second':'2'}
请将其按照以下格式输出， 格式:XXXX-XX-XX XX:XX:XX。如上例应该输出： 2013-09-30 16:45:02。示例：输入：t = {"year": "2013", "month": "9", "day": "30", "hour": "16", "minute": "45", "second": "2"}
输出：2013-09-30 16:45:02"""
#t={'year':'2013','month':'9','day':'30','hour':'16','minute':'45','second':'2'}
#year=t['year']
#month=t['month']
#day=t['day']
#hour=t['hour']
#minute=t['minute']
#second=t['second']
#if int(month)<10:
#    month="0"+month
#if int(day)<10:
#    day="0"+day
#if int(hour)<10:
#    hour="0"+hour
#if int(minute)<10:
#    minute="0"+minute
#if int(second)<10:
#    second="0"+second
#print(year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second)
"""第26题：序列判断
题目描述：给你一个整数组成的列表L，按照下列条件输出：
若L是升序排列的,则输出"UP";
若L是降序排列的,则输出"DOWN";
若L无序，则输出"WRONG"。示例：输入：L = [1, 1, 3, 3, 4]
输出：UP"""
#L = [1, 1, 3, 3, 4]
#a=""
#b=""
#for i in L:
#    a=a+str(i)
#print(a)
#B=sorted(a)
#for i in B:
#    b=b+str(i)
#print(b)
#c=b[::-1]
#if a==b:
#    print("UP")
#   print("DOWN")
#else:
#    print("WRONG")
"""第27题：加油站
题目描述：一个环形的公路上有n个加油站，编号为0,1,2,...n-1,
每个加油站加油都有一个上限，保存在列表limit中，即limit[i]为第i个加油站加油的上限，
而从第i个加油站开车开到第(i+1)%n个加油站需要cost[i]升油,cost为一个列表。
现在有一辆开始时没有油的车，要从一个加油站出发绕这个公路跑一圈回到起点。
给你整数n，列表limit和列表cost,你来判断能否完成任务。
如果能够完成任务，输出起始的加油站编号，如果有多个,输出编号最小的。
如果不能完成任务，输出-1。示例：输入：n = 2
limit = [1, 2]
cost = [2, 2]
输出：-1"""




"""第28题：相同数字
题目描述：给你一个整数列表L,判断L中是否存在相同的数字，
若存在，输出YES，否则输出NO。示例：输入：L = [123, 432, 23]
输出：NO"""
"方法一：count()函数"
#L = [123, 432, 23,123]
#for i in L:
#    times=L.count(i)
#if times>1:
#    print("yes")
#else:
#    print("no")
"""count()函数  a.count(element)，用于统计某个元素在列表、元组或字符串中出现的次数。其中，element是要统计的元素。a为查找范围"""
"方法二：利用set()函数不可重复性"
#L=[123, 432, 23]
#if len(set(L))==len(L):
#    print("NO")
#else:
#    print("yes")
"""set()函数可生成集合，集合内容不可重复，会将重复内容剔除"""
"""第29题：判断三角形
题目描述：给你三个整数a,b,c,  判断能否以它们为三个边长构成三角形。
若能，输出YES，否则输出NO。示例：输入：a = 5
b = 5
c = 5
输出：YES"""
#a=input("请输入边长1： ")
#b=input("请输入边长2： ")
#c=input("请输入边长3： ")
#if a+b>c and a+c>b and b+c>a:
#   print("yes")
"""第30题：National Day
题目描述：马上国庆节了，用一个英文单词描述你此时此刻的心情。"""
#a = "happy"
#print(a)













